 const printModule = uni.requireNativePlugin('PrintModuleCPCL');
 // 保存当前蓝牙状态和已连接的打印机地址
 let isPrinterConnected = false;
 let currentMacAddress = '';
 
//蓝牙连接打印机
export function printContect(macAddress){
	currentMacAddress = macAddress;
	printModule.connectionBT({ 'address':macAddress}, (result) => {
	    //返回结果是0的话连接成功
	    if (result.result === 0) {
			uni.showToast({
				title:'打印机连接成功',
				icon:'success'
			})
	        // console.log({ title: "打印机连接成功", icon: "success" });
	    } else {
	        // console.log({ title: "打印机连接失败", icon: "none" });
			uni.showToast({
				title:'打印机连接失败',
				icon:'error'
			})
	    }
	});
}


/**
 * 打印前检查状态并执行打印
 * @param {Function} printFn 真正的打印函数
 * @param  {...any} args 打印函数的参数
 */
export function safePrint() {

  // 1. 检查是否有保存的打印机
  // if (!currentMacAddress) {
  //   uni.showToast({
  //     title:'请先连接打印机',
  //     icon:'none'
  //   });
  //   return;
  // }

  // 2. 检查打印机状态
  printModule.getPrinterStatus( (ret) =>{

	  if (ret.result !== 0) {
	    // 状态异常（未连接/掉线/关机等）
	    isPrinterConnected = false;
	    uni.showToast({
	      title:'打印机连接异常',
	      icon:'none'
	    });
	    return;
	  }
  });
}

//打印文本的方法(values是一个数组，要打印的内容)
export function	printData(values) {
	 const printModule = uni.requireNativePlugin('PrintModuleCPCL');
	   printModule.setLanguageEncode({ language: 'GBK' }, (ret) => {});
	 
	   // 打印区域高度 = 行数 * 行高
	   const lineHeight = 30;
	   const height = values.length * lineHeight + 20;
	   printModule.printAreaSize({ height: String(height), number: '1' }, result => {});
	 
	   // 初始 Y 坐标
	   let y = 20;
	 
	   // 遍历数组逐行打印
	   values.forEach(val => {
		 printModule.printText({
		   x_pos: '0',
		   y_pos: String(y),
		   fontSize: '7',
		   direction: 'T',
		   data: String(val)
		 }, result => {});
		 y += lineHeight;
	   });

	   // 执行打印
	   printModule.print();
}

//打印二维码的方法(x:横坐标y:纵坐标.width:二维码大小)
export function printQRCode(data, x , y , width ) {
  // const printModule = uni.requireNativePlugin('PrintModuleCPCL');
  printModule.setLanguageEncode({ language: 'GBK' }, (ret) => {});

  // 打印区域大小（高度可根据二维码位置+大小调整）
  const height = y + width * 50 + 50; // 简单预估高度
  printModule.printAreaSize({ height: String(height), number: '1' }, result => {});

  // 打印二维码
  printModule.printQRCode({
	x_pos: String(x),     // X 坐标
	y_pos: String(y),     // Y 坐标
	rotation: 'BARCODE',        // 方向：N=正常，R=旋转90度，I=倒置，B=旋转270度
	mode: '2',            // 模式（2=常用）
	width: String(width),  // 二维码模块大小（1-20，数值越大二维码越大）
	code_data: String(data) // 二维码内容
  }, result => {});

  // 执行打印
  printModule.print();
  //接收打印完成状态
  printModule.getEndStatus({'outTime':16},(ret) => {
		if (ret.result !== 0){
			uni.showToast({
				title:'二维码打印失败,请手动打印',
				icon:'error'
			})
		}
  })
}

//库管打印
export function printTextAndQRCode(data, qrData) {
  printModule.setLanguageEncode({ language: 'GBK' }, (ret) => {});
  
    // 整张纸 7.5cm 高 ≈ 750 点
    printModule.printAreaSize({ height: "600", number: "1" }, result => {});
  
    // === 文本部分（上方） ===
    const startX = 20;    // 左边距
    let y = 50;           // 起始 Y
    const lineHeight = 50; // 每行高度（控制上下间距）
  
    Object.keys(data).forEach((key) => {
      // 打印 "key：value"
      printModule.printText({
        x_pos: String(startX),
        y_pos: String(y),
        fontSize: '4',
        direction: 'T',   // 正常方向（横向）
        data: key  + String(data[key])
      }, result => {});
      y += lineHeight; // 换行
    });
  
    // === 二维码部分（下方） ===
    const qrX = 20;   // 二维码左边距
    const qrY = y + 50;   // 二维码顶边距，避免和文字重叠
    const qrSize = 16; // 模块大小
  
    printModule.printQRCode({
      x_pos: String(qrX),
      y_pos: String(qrY),
      rotation: 'BARCODE',   // 正常方向
      mode: 'M',
      width: String(qrSize),
      code_data: qrData
    }, result => {});
  
    // 加粗
    printModule.setBold({ 'bold': '5' });
  
    // 执行打印
    printModule.printForm();
    printModule.print();
}




//(铸造)打印
export function printVerticalLabel(data, qrData) {
  printModule.setLanguageEncode({ language: 'GBK' }, (ret) => {});

  // 整张纸 7.5cm 高 ≈ 750 点
  printModule.printAreaSize({ height: "600", number: "1" }, result => {});

  // === 文本部分（上方） ===
  const baseX = 50;     // 第一列起始 X
  const colWidth = 50; // 列间距
  const textTopY = 280;  // 起始 Y

  let colIndex = 0;
  Object.keys(data).forEach((key) => {
    const x = baseX + colIndex * colWidth;
    let y = textTopY;

// 再打印 value，往下移一点
 printModule.printText({
      x_pos: String(x),
      y_pos: String(y),
      fontSize: '4',
      direction: 'T90',
      data: String(data[key])
    }, result => {});
	
	
	y += 100;
	
    // 先打印 key
    printModule.printText({
      x_pos: String(x),
      y_pos: String(y),
      fontSize: '4',
      direction: 'T90',
      data: key 
    }, result => {});

   

    colIndex++;
  });

  // === 二维码部分（下方） ===
        const qrX = 70;   // 二维码左边距
        const qrY = 400;   // 二维码顶边距
        const qrSize = 8; // 模块大小
  printModule.printQRCode({
    x_pos: String(qrX),
    y_pos: String(qrY),
    rotation: 'BARCODE',
    mode: 'M',
    width: String(qrSize),
    code_data: qrData
  }, result => {});
  printModule.setBold({'bold':'5'})

printModule.printForm()
  printModule.print();
}



//机加打印
export function printVerticalLabelJiJia(itemNo,data, qrData) {
  printModule.setLanguageEncode({ language: 'GBK' }, (ret) => {});

  // 整张纸 7.5cm 高 ≈ 750 点
  printModule.printAreaSize({ height: "600", number: "1" }, result => {});
	//打印件号
	printModule.printText({
	     x_pos: String(30),
	     y_pos: String(320),
	     fontSize: '4',
	     direction: 'T90',
	     data: (itemNo)
	   }, result => {});
	// === 文本部分（上方） ===
	const baseX = 100;     // 第一列起始 X
	const colWidth = 50; // 列间距
	const textTopY = 280;  // 起始 Y
  let colIndex = 0;
  Object.keys(data).forEach((key) => {
    const x = baseX + colIndex * colWidth;
    let y = textTopY;

// 先打印 value，往下移一点
 printModule.printText({
      x_pos: String(x),
      y_pos: String(y),
      fontSize: '8',
      direction: 'T90',
      data: String(data[key])
    }, result => {});
	
	
	y += 100;
	
    // 先打印 key
    printModule.printText({
      x_pos: String(x),
      y_pos: String(y),
      fontSize: '8',
      direction: 'T90',
      data: key + ':'
    }, result => {});

   

    colIndex++;
  });

  // === 二维码部分（下方） ===
        const qrX = 70;   // 二维码左边距
        const qrY = 400;   // 二维码顶边距
        const qrSize = 8; // 模块大小
  printModule.printQRCode({
    x_pos: String(qrX),
    y_pos: String(qrY),
    rotation: 'BARCODE',
    mode: 'M',
    width: String(qrSize),
    code_data: qrData
  }, result => {});
  printModule.setBold({'bold':'5'})

printModule.printForm()
  printModule.print();
}




